// 定义全局主题配置小仓库[选择式Api写法]
import { defineStore } from "pinia";
// defineStore方法执行会返回一个函数，函数的作用就是让组件可以获取到仓库数据
const mapStore = defineStore("map", {
  state: () => {
    return {
      // 地图右侧功能区移动
      mapType: [] as string[],
      timentervalOptions: [
        {
          value: 1,
          label: "1倍"
        },
        {
          value: 2,
          label: "2倍"
        },
        {
          value: 4,
          label: "4倍"
        },
        {
          value: 8,
          label: "8倍"
        },
        {
          value: 16,
          label: "16倍"
        }
      ],
      // 开始时间（秒）
      startTime: 0,
      // 结束时间（秒）
      endTime: 0,
      // 每大刻度间隔时间
      interval: 12,
      // 每个大刻度之间的小刻度数
      smallInterval: 5,
      // 时间轴参数
      timelineParameters: {},
      curIsPlay: false,
      //倍速
      timeIntervalValue: 1
    };
  },
  actions: {
    setMapType(value: string[]) {
      this.$state.mapType = value;
    },
    pushMapType(value: any) {
      if (this.$state.mapType.includes(value)) return;
      this.$state.mapType.push(value);
    },
    timeChange(value: any) {
      this.$state.timelineParameters = value;
    },
    convertTimestampToSeconds(timestamp: any) {
      return Math.floor(timestamp / 1000);
    },
    clearTimeAxis() {
      this.$state.mapType = [];
      this.$state.startTime = 0;
      this.$state.endTime = 0;
      this.$state.curIsPlay = false;
    },
    setTime(value: any) {
      this.$state.startTime = this.convertTimestampToSeconds(value.startTime);
      this.$state.endTime = this.convertTimestampToSeconds(value.endTime);
      this.$state.interval = Math.floor((this.$state.endTime - this.$state.startTime) / 20);
    },
    setCurIsPlay(value: any) {
      this.$state.curIsPlay = value;
    }
  },
  // 计算属性，和vuex是使用一样，getters里面不是方法，是计算返回的结果值
  getters: {}
});

// 对外暴露方法
export default mapStore;
